home *** CD-ROM | disk | FTP | other *** search
/ CICA 1995 September (Japanese) / CICA Shareware for Windows CD-ROM (Walnut Creek) (September 1995) (Japanese) (Disc 2).iso / disc2 / patches / symantec / mfcsim.exe / SIMNEW.EXE / MFC / SAMPLES / DIB / DIB.WMC < prev    next >
Encoding:
Text File  |  1993-10-06  |  11.1 KB  |  419 lines

  1. // Filename: DIB.WMC                                        
  2. // "DIB" Generated by Visual Programmer.                    
  3. // Author:   Blue Sky                                       
  4.  
  5. // 
  6. // ***********************************************************************
  7. // Do not add code here. Add code in the .CPP file.
  8. // 
  9. // This file is maintained by the Switch-It Module.
  10. // As you make changes in your applications design,
  11. // this file is automatically updated, therefore you never modify this file.
  12. // 
  13. // 
  14. // 
  15. // For more information,
  16. // see the section "How code is generated" in the documentation.
  17. // 
  18. // ***********************************************************************
  19. // 
  20.  
  21. // *************************************************************
  22. //                GLOBAL VARIABLES
  23. // *************************************************************
  24.  
  25. BOOL      bHelpSupport   = FALSE; // Controlling Help Support
  26. DWORD     dwDialogProp   = 0; // Controlling Dialog Box Color
  27. BOOL      b256Color      = TRUE;  // Controlling bitmap drawing
  28. BOOL      bPreCreateCheck= TRUE;  // Controlling PreCreateWindow handling
  29. HINSTANCE hBMPInst       = 0;     // Handle to instance for bitmaps
  30. UINT      wPrivateMessage= RegisterWindowMessage("BLDPrivateMessage");
  31.  
  32.  
  33.  
  34.  
  35.  
  36. // *************************************************************
  37. // Member Functions for Class: Cwm_BaseApplication
  38. // Base Class                : CWinApp
  39. // *************************************************************
  40.  
  41.  
  42. BEGIN_MESSAGE_MAP(Cwm_BaseApplication, CWinApp)
  43.     
  44.     //  Processing of linked menu items in menu: DIB  
  45.     
  46. ON_COMMAND(IDM_Red, wmIDM_RedCM)
  47. ON_COMMAND(IDM_Blue, wmIDM_BlueCM)
  48. ON_COMMAND(IDM_Own, wmIDM_OwnCM)
  49. ON_COMMAND(IDM_About, wmIDM_AboutCM)
  50. END_MESSAGE_MAP()
  51.  
  52.  
  53. Cwm_BaseApplication::Cwm_BaseApplication (const char* pName)
  54.     : CWinApp (pName)
  55. {
  56.     pWndClient = NULL;
  57. }
  58.  
  59.  
  60. BOOL Cwm_BaseApplication::InitApplication()
  61. {
  62.  
  63.     return CWinApp::InitApplication();
  64. }
  65.  
  66.  
  67.  
  68. BOOL Cwm_BaseApplication::InitInstance()
  69. {
  70.     OFSTRUCT of;
  71.     int      len;
  72.     char     *pStr;
  73.  
  74.     if(dwDialogProp&BLDGRAY_DIALOGBOX)
  75.         SetDialogBkColor();     
  76.  
  77.     // Create the main window
  78.     Cwm_MainWnd*  ms_pMainUserWnd;
  79.     ms_pMainUserWnd   = BLDMainCreateWnd(NULL);
  80.     m_pMainWnd        = ms_pMainUserWnd;
  81.  
  82.  
  83.     ::GetModuleFileName(AfxGetInstanceHandle(),ms_szHelpFilePath,sizeof(ms_szHelpFilePath));
  84.     len=lstrlen(ms_szHelpFilePath);
  85.     for (pStr=&ms_szHelpFilePath[len-1];pStr>ms_szHelpFilePath;--pStr)
  86.         {
  87.         if (*pStr=='\\')
  88.             {
  89.             pStr++;
  90.             lstrcpy(pStr,"DIB.HLP");
  91.             if (!::OpenFile(ms_szHelpFilePath,&of,OF_EXIST)!=-1)
  92.                 {
  93.                 lstrcpy(ms_szHelpFilePath,"DIB.HLP");
  94.                 }
  95.             break;
  96.             }         
  97.         }
  98.     m_pszHelpFilePath = ms_szHelpFilePath;
  99.  
  100.  
  101.     return CWinApp::InitInstance();
  102. }
  103.  
  104.  
  105.  
  106. int Cwm_BaseApplication::ExitInstance()
  107. {
  108.  
  109.     return CWinApp::ExitInstance();
  110. }
  111.  
  112.  
  113.  
  114. //No help support, return FALSE
  115. BOOL Cwm_BaseApplication::MenuHelp(DWORD dwData)
  116.     {
  117.     return FALSE;
  118.     }
  119.  
  120.  
  121.  
  122. // *************************************************************
  123. // Member Functions for Class: Cwm_MainBaseWnd
  124. // Base Class                : CFrameWnd
  125. // *************************************************************
  126.  
  127.  
  128. CString Cwm_MainBaseWnd::ms_strWndClass; //Window Class Name
  129.  
  130.  
  131. IMPLEMENT_DYNCREATE(Cwm_MainBaseWnd, CFrameWnd)
  132.  
  133. BEGIN_MESSAGE_MAP(Cwm_MainBaseWnd, CFrameWnd)
  134.  
  135.     ON_REGISTERED_MESSAGE(wPrivateMessage,SimHandlePrivateMessage)
  136.     ON_WM_CREATE()
  137.  
  138. END_MESSAGE_MAP()
  139.  
  140.  
  141.  
  142. Cwm_MainBaseWnd::Cwm_MainBaseWnd()
  143.     : CFrameWnd()
  144. {
  145.  
  146.     ms_pToolbarTop= ms_pToolbarBottom=ms_pToolbarLeft=ms_pToolbarRight=NULL;
  147.     ms_pWndClient = NULL;
  148.  
  149.  
  150.     if (ms_strWndClass.IsEmpty())
  151.        SimRegisterClass();
  152.  
  153. }
  154.  
  155.  
  156.  
  157. Cwm_MainBaseWnd::~Cwm_MainBaseWnd()
  158. {
  159. }
  160.  
  161.  
  162.  
  163. BOOL Cwm_MainBaseWnd::SimRegisterClass()
  164. {
  165.     WNDCLASS    WndClass;
  166.  
  167.     WndClass.lpszClassName = "BLD_Main";
  168.     WndClass.style         = CS_DBLCLKS;
  169.     WndClass.cbClsExtra    = 0;
  170.     WndClass.cbWndExtra    = 0;
  171.     WndClass.hInstance     = AfxGetInstanceHandle();
  172.     WndClass.hIcon         = LoadIcon(AfxGetResourceHandle(),"BALL");
  173.     WndClass.hCursor       = LoadCursor(NULL,IDC_ARROW);
  174.     WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  175.     WndClass.lpszMenuName  = "DIB";
  176.  
  177.     if (!ms_strWndClass.IsEmpty())
  178.         return TRUE;                      // Already registered
  179.  
  180.     ms_strWndClass = AfxRegisterWndClass(WndClass.style,
  181.        WndClass.hCursor, WndClass.hbrBackground, WndClass.hIcon);
  182.  
  183.     if (ms_strWndClass.IsEmpty())
  184.         return FALSE;
  185.     else
  186.         return TRUE;
  187. }
  188.  
  189.  
  190.  
  191. BOOL Cwm_MainBaseWnd::SimInitWindow(CWnd *pAParent)
  192. {
  193.     CREATESTRUCT        sCr;
  194.  
  195.     if (ms_strWndClass.IsEmpty())
  196.        return FALSE;
  197.  
  198.     sCr.lpCreateParams  = NULL;
  199.     sCr.hInstance       = AfxGetInstanceHandle();
  200.     sCr.dwExStyle       = 0;
  201.     sCr.lpszClass       = ms_strWndClass;
  202.     sCr.lpszName        = "DIB";
  203.     sCr.style           = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_OVERLAPPED;
  204.     sCr.hwndParent      = pAParent ? pAParent->GetSafeHwnd() : (HWND)NULL;
  205.     sCr.x               = CW_USEDEFAULT;
  206.     sCr.y               = 0;
  207.     sCr.cx              = CW_USEDEFAULT;
  208.     sCr.cy              = 0;
  209.     sCr.hMenu           = NULL;
  210.  
  211.     BOOL                bRet;
  212.  
  213.     if (sCr.cx==CW_USEDEFAULT)
  214.         {
  215.         bRet            = Create(ms_strWndClass,sCr.lpszName,sCr.style,
  216.                                  rectDefault,pAParent,
  217.                                  MAKEINTRESOURCE(IDR_DIB),sCr.dwExStyle);
  218.         }
  219.     else
  220.         {
  221.         RECT            r;
  222.  
  223.         r.left          = sCr.x;
  224.         r.top           = sCr.y;
  225.         r.right         = sCr.cx+sCr.x;
  226.         r.bottom        = sCr.cy+sCr.y;
  227.  
  228.         bRet            = Create(ms_strWndClass,sCr.lpszName,sCr.style,
  229.                                  r,pAParent,MAKEINTRESOURCE(IDR_DIB),
  230.                                  sCr.dwExStyle);
  231.         }
  232.  
  233.     if (!bRet)
  234.         {
  235.         BLDDisplayMessage(::GetActiveWindow(),BLD_CannotCreateWindow,"Main",
  236.                           MB_OK | MB_ICONASTERISK);
  237.         return FALSE;
  238.         }
  239.  
  240.     BLDLoadAccelerators(this,IDR_DIB);
  241.  
  242.  
  243.     // To initialize bitmaps in menus
  244.     HMENU hSub;
  245.     BLDLoadMenu(this,IDR_DIB,&hSub,FALSE);
  246.     ShowWindow(TheApp.m_nCmdShow);
  247.     UpdateWindow();
  248.  
  249.     return TRUE;
  250. }
  251.  
  252.  
  253. // PreCreateWindow - overridden for window to get correct properties
  254. BOOL Cwm_MainBaseWnd::PreCreateWindow(CREATESTRUCT& sCr)
  255. {
  256.     if (!sCr.lpszClass&&bPreCreateCheck)
  257.         {
  258.         HMENU           hSubMenu;
  259.  
  260.         sCr.dwExStyle   = 0;
  261.         sCr.lpszClass   = ms_strWndClass;
  262.         sCr.lpszName    = "DIB";
  263.         sCr.style       = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_OVERLAPPED;
  264.  
  265.         if (sCr.hMenu&&::IsMenu(sCr.hMenu))
  266.             ::DestroyMenu(sCr.hMenu);
  267.         sCr.hMenu       = BLDLoadMenu(NULL,IDR_DIB,&hSubMenu,TRUE);
  268.         }
  269.     return CFrameWnd::PreCreateWindow(sCr);
  270. }
  271.  
  272.  
  273.  
  274. int Cwm_MainBaseWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
  275. {
  276.  
  277.     BLD_DIBClientClFunc(this);
  278.     return CFrameWnd::OnCreate(lpCreateStruct);
  279. }
  280.  
  281.  
  282.  
  283. LRESULT Cwm_MainBaseWnd::SimHandlePrivateMessage(WPARAM wParam,LPARAM lParam)
  284. {
  285.     LPBLDSetChildDialog lpSetChildDialog;
  286.     switch(wParam)
  287.         {
  288.     case SIM_GETCHILDDIALOG:
  289.         switch(LOWORD(lParam))
  290.             {
  291.         case 0: //Client area controls
  292.             return (LRESULT)(LPSTR)(CSimClientDlg*)ms_pWndClient;
  293.         case CBRS_RIGHT:
  294.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarRight;
  295.         case CBRS_LEFT:
  296.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarLeft;
  297.         case CBRS_BOTTOM:
  298.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarBottom;
  299.         case CBRS_TOP:
  300.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarTop;
  301.             }
  302.         break;
  303.     case SIM_SETCHILDDIALOG:
  304.         lpSetChildDialog = (LPBLDSetChildDialog)lParam;
  305.         switch(lpSetChildDialog->nStyle)
  306.             {
  307.         case 0: //Client area controls
  308.             ms_pWndClient     = (CSimClientDlg*)lpSetChildDialog->pWnd;
  309.             break;
  310.         case CBRS_RIGHT:
  311.             ms_pToolbarRight  = (CSimToolbar*)lpSetChildDialog->pWnd;
  312.             break;
  313.         case CBRS_LEFT:
  314.             ms_pToolbarLeft   = (CSimToolbar*)lpSetChildDialog->pWnd;
  315.             break;
  316.         case CBRS_BOTTOM:
  317.             ms_pToolbarBottom = (CSimToolbar*)lpSetChildDialog->pWnd;
  318.             break;
  319.         case CBRS_TOP:
  320.             ms_pToolbarTop    = (CSimToolbar*)lpSetChildDialog->pWnd;
  321.             break;
  322.             }
  323.         break;
  324.     case SIM_RELOADACCELERATORS:
  325.         BLDLoadAccelerators(this,IDR_DIB);
  326.         break;
  327.     case SIM_LOADACCELTABLE:
  328.         if(m_hAccelTable)
  329.             m_hAccelTable=0;
  330.         if(lParam)
  331.             LoadAccelTable(MAKEINTRESOURCE((int)lParam));
  332.         break;
  333.         }
  334.     return 0;
  335. }
  336.  
  337.  
  338. // *************************************************************
  339. //        FUNCTION FOR SWITCHING MENU SET
  340. // *************************************************************
  341.  
  342. BOOL BLDSwitchMenu(CWnd *pWnd,char *pTemplateName)
  343.     {
  344.     HMENU       hMenu1,hMenu,hSubMenu;
  345.     DWORD       style;
  346.  
  347.     hMenu       = 0;
  348.     hSubMenu    = 0;
  349.     
  350.     style = pWnd->GetStyle();
  351.     if((style & WS_CHILD) == WS_CHILD)     //  Called from control in main window? 
  352.         {
  353.         pWnd=pWnd->GetParent();
  354.         if (!pWnd)
  355.             return FALSE;
  356.         style = pWnd->GetStyle();
  357.         if((style & WS_CHILD) == WS_CHILD) //  No menu in a WS_CHILD window.
  358.             return FALSE;
  359.         }
  360.     if((style & WS_CAPTION) != WS_CAPTION) //  No menu if no caption.
  361.         return FALSE;
  362.     
  363.     hMenu1 = pWnd->GetMenu()->GetSafeHmenu();
  364.  
  365.     if (lstrcmpi(pTemplateName,"DIB")==0)
  366.         hMenu = BLDLoadMenu(pWnd,IDR_DIB,&hSubMenu,TRUE);
  367.  
  368.     if (!hMenu)
  369.         hMenu = LoadMenu(AfxGetResourceHandle(),pTemplateName);
  370.     if (!hMenu)
  371.         {
  372.         BLDDisplayMessage(pWnd->GetSafeHwnd(),BLD_CannotLoadMenu,pTemplateName,
  373.                           MB_OK | MB_ICONASTERISK);
  374.         return FALSE;
  375.         }
  376.     
  377.     if (!pWnd->SetMenu(CMenu::FromHandle(hMenu)))
  378.         return FALSE;
  379.     if (hMenu1)
  380.         DestroyMenu(hMenu1);
  381.     
  382.     pWnd->DrawMenuBar();
  383.     return TRUE;
  384.     }
  385.  
  386.  
  387. //  Code to load menu and add bitmaps
  388. HMENU BLDLoadMenu(CWnd *pWnd,int iResource,HMENU *phSubMenu,BOOL bLoad)
  389.     {
  390.     HMENU       hMenu;
  391.  
  392.     *phSubMenu  = 0;
  393.     if (bLoad)
  394.         hMenu   = LoadMenu(AfxGetResourceHandle(),MAKEINTRESOURCE(iResource));
  395.     else
  396.         {
  397.         if (!pWnd)
  398.             return FALSE;
  399.         hMenu   = pWnd->GetMenu()->GetSafeHmenu();
  400.         }
  401.  
  402.     if(!hMenu)
  403.         return FALSE;
  404.  
  405.  
  406.     if (pWnd)
  407.         BLDLoadAccelerators(pWnd,iResource);
  408.  
  409.     return hMenu;
  410.     }
  411.  
  412.  
  413. //  Code to load accelerators
  414. BOOL BLDLoadAccelerators(CWnd *pWnd,int iResource)
  415.     {
  416.  
  417.     return TRUE;
  418.     }
  419.